package _458

import "math"

func maxDotProduct(nums1 []int, nums2 []int) int {
	// m -- nums1的当前最大点积的子序列
	// n -- nums2的当前最大点积的子序列
	m, n := make([]int, 0), make([]int, 0)

	// 获取二者中长度较小的集合
	nums1Smaller := true
	minLen := len(nums1)
	if minLen > len(nums2) {
		minLen = len(nums2)
		nums1Smaller = false
	}

	maxDotP := math.MinInt32
	for i := 0; i < minLen; i++ {
		tempM, tempN := append(m, nums1[i]), append(n, nums2[i])
		p := calcDotP(tempM, tempN)
		if maxDotP < p {
			maxDotP = p
			m = tempM
			n = tempN
		}
	}

	if nums1Smaller {

	}

	return maxDotP
}

func calcDotP(m []int, n []int) int {
	if len(m) != len(n) {
		return 0
	}
	dp := 0
	for i := range m {
		dp += m[i] * n[i]
	}
	return dp
}
